package com.deliccio.entitys;

import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.Date;
import java.util.List;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import com.deliccio.connect.Entidad;

@Entity
@Table(name = "pedidos")
public class Pedidos implements Entidad, Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idpedido", nullable = false)
    private Integer id;
    @Basic(optional = false)
    
    @ManyToOne
    @JoinColumn(name = "idsucursales")
    private Sucursales sucursales;
    
    @Column(name = "precioTotal", precision = 22)
    private Double precioTotal;
    @Column(name = "codigo", length = 20)
    private String codigo;
    @Column(name = "fechareserva")
    @Temporal(TemporalType.DATE)
    private Date fechareserva;
    @Column(name = "fechaatendida")
    @Temporal(TemporalType.DATE)
    private Date fechaatendida;
    @Column(name = "fechapedido")
    @Temporal(TemporalType.DATE)
    private Date fechapedido;
    @Column(name = "fechaactualizada")
    @Temporal(TemporalType.DATE)
    private Date fechaactualizada;
    @Column(name = "horainicio")
    private String horainicio;
    @Column(name = "horafin")
    private String horafin;
    @OneToMany(mappedBy = "pedidos")
	//@JoinColumn(name="iddetapedido")
    private List<DetallePedido> detallePedidoList;
    @ManyToOne
    @JoinColumn(name = "idusuario")
    private Usuario usuario;
    @ManyToOne
    @JoinColumn(name = "idubicacion")
    private Ubicacion ubicacion;
    @ManyToOne
    @JoinColumn(name = "idestado")
    private Estadosgenerales estadosgenerales;
    @ManyToOne
    @JoinColumn(name = "idcliente")
    private Cliente cliente;
  /*  @OneToMany(mappedBy="pedidos")
    private List<PedidoMesa> pedidoMesaList;*/

    public transient List<Mesa> lstMesas;
    public transient Boolean delivery;
    
    public Pedidos() {
    }

    // new Pedidos(p.id,p.precioTotal,p.fechareserva,p.fechaatendida,p.estadosgenerales)
    
    
    
    public Pedidos(Sucursales sucursales,Double precioTotal,Date fechareserva,Date fechaatendida,Date fechapedido,Date fechaactualizada,String horainicio,String horafin,Usuario usuario,Estadosgenerales estadosgenerales){

	this.sucursales=sucursales;
	this.precioTotal=precioTotal;
	this.fechareserva=fechareserva;
	this.fechaatendida=fechaatendida;
	this.fechapedido=fechapedido;
	this.fechaactualizada=fechaactualizada;
	this.horainicio=horainicio;
	this.horafin=horafin;
	this.usuario=usuario;
	this.estadosgenerales=estadosgenerales;
}

	
	public Pedidos(Integer id,Double precioTotal,Date fechareserva,Date fechaatendida,Estadosgenerales estadosgenerales,String horainicio){
		super();
		this.id=id;
		this.precioTotal=precioTotal;
		this.fechareserva=fechareserva;
		this.fechaatendida=fechaatendida;
		this.estadosgenerales=estadosgenerales;
		this.horainicio=horainicio;
	}

	public Pedidos(Double precioTotal,Date fechareserva,Date fechaatendida,Date fechapedido,Date fechaactualizada,String horainicio,String horafin,Ubicacion ubicacion,Estadosgenerales estadosgenerales,Cliente cliente){
		super();
		this.precioTotal=precioTotal;
		this.fechareserva=fechareserva;
		this.fechaatendida=fechaatendida;
		this.fechapedido=fechapedido;
		this.fechaactualizada=fechaactualizada;
		this.horainicio=horainicio;
		this.horafin=horafin;
		this.ubicacion=ubicacion;
		this.estadosgenerales=estadosgenerales;
		this.cliente=cliente;
	}

	public Boolean getDelivery(){
		return delivery;
	}

	public void setDelivery(Boolean delivery){
		this.delivery=delivery;
	}

	public List<Mesa> getLstMesas(){
		return lstMesas;
	}

	public void setLstMesas(List<Mesa> lstMesas){
		this.lstMesas=lstMesas;
	}

	public Sucursales getSucursales() {
		return sucursales;
	}

	public void setSucursales(Sucursales sucursales) {
		this.sucursales = sucursales;
	}

	public Double getPrecioTotal() {
        return precioTotal;
    }

    public void setPrecioTotal(Double precioTotal) {
        this.precioTotal = precioTotal;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public Date getFechareserva() {
        return fechareserva;
    }

    public void setFechareserva(Date fechareserva) {
        this.fechareserva = fechareserva;
    }

    public Date getFechaatendida() {
        return fechaatendida;
    }

    public void setFechaatendida(Date fechaatendida) {
        this.fechaatendida = fechaatendida;
    }

    public Date getFechapedido() {
        return fechapedido;
    }

    public void setFechapedido(Date fechapedido) {
        this.fechapedido = fechapedido;
    }

    public Date getFechaactualizada() {
        return fechaactualizada;
    }

    public void setFechaactualizada(Date fechaactualizada) {
        this.fechaactualizada = fechaactualizada;
    }

    public String getHorainicio() {
        return horainicio;
    }

    public void setHorainicio(String horainicio) {
        this.horainicio = horainicio;
    }

    public String getHorafin() {
        return horafin;
    }

    public void setHorafin(String horafin) {
        this.horafin = horafin;
    }

    public List<DetallePedido> getDetallePedidoList() {
        return detallePedidoList;
    }

    public void setDetallePedidoList(List<DetallePedido> detallePedidoList) {
        this.detallePedidoList = detallePedidoList;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public Ubicacion getUbicacion() {
        return ubicacion;
    }

    public void setUbicacion(Ubicacion ubicacion) {
        this.ubicacion = ubicacion;
    }

    public Estadosgenerales getEstadosgenerales() {
        return estadosgenerales;
    }

    public void setEstadosgenerales(Estadosgenerales estadosgenerales) {
        this.estadosgenerales = estadosgenerales;
    }

    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }
/*
    public List<PedidoMesa> getPedidoMesaList() {
        return pedidoMesaList;
    }

    public void setPedidoMesaList(List<PedidoMesa> pedidoMesaList) {
        this.pedidoMesaList = pedidoMesaList;
    }  
    */
    
    
    
	public Integer getId(){
		return id;
	}
	
	public void setId(Integer id){
		this.id=id;
	}
/*
	  @SuppressWarnings("rawtypes")
		@Override
		public String toString() {
			String toString = "[";
			@SuppressWarnings("unused")
			String campo,iscampo = "";
			try {
				Class clase = this.getClass();
				Method[] metodos = clase.getDeclaredMethods();
				for (Method met:metodos) {					
					if (met.getName().indexOf("get") >= 0) {
						toString += met.getName()+"="+met.invoke(this, null)+" - ";
					}
				}								
				toString+="]";
			} catch (Exception e) {			
				System.out.println(e);
			}
			return toString;
		}
 */
}
